<template>
  <!-- 右侧选择区域布局 -->
  <div class="InfoWrap">
    <div class="goodsDetail">
      <h3 class="InfoName">
        {{ skuInfo.skuName }}
      </h3>
      <p class="news">
        {{ skuInfo.skuDesc }}
      </p>
      <div class="priceArea">
        <div class="priceArea1">
          <div class="title">价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格</div>
          <div class="price">
            <i>¥</i>
            <em>{{ skuInfo.price }}</em>
            <span>降价通知</span>
          </div>
          <div class="remark">
            <i>累计评价</i>
            <em>65545</em>
          </div>
        </div>
        <div class="priceArea2">
          <div class="title">
            <i>促&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;销</i>
          </div>
          <div class="fixWidth">
            <i class="red-bg">加价购</i>
            <em class="t-gray"
              >满999.00另加20.00元，或满1999.00另加30.00元，或满2999.00另加40.00元，即可在购物车换购热销商品</em
            >
          </div>
        </div>
      </div>
      <div class="support">
        <div class="supportArea">
          <div class="title">支&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;持</div>
          <div class="fixWidth">以旧换新，闲置手机回收 4G套餐超值抢 礼品购</div>
        </div>
        <div class="supportArea">
          <div class="title">配 送 至</div>
          <div class="fixWidth">广东省 深圳市 宝安区</div>
        </div>
      </div>
    </div>

    <div class="choose">
      <div class="chooseArea">
        <div class="choosed"></div>
        <dl
          v-for="skuSaleAttr in skuInfo.skuSaleAttrValueList"
          :key="skuSaleAttr.id"
        >
          <dt class="title">{{ skuSaleAttr.saleAttrName }}</dt>
          <dd :class="{ active: isActive }">
            {{ skuSaleAttr.saleAttrValueName }}
          </dd>
        </dl>
      </div>
      <div class="cartWrap">
        <div class="controls">
          <button
            class="mins"
            :disabled="goodsNum <= 1"
            @click="goodsNum > 1 ? goodsNum-- : (goodsNum = 1)"
          >
            -
          </button>
          <input
            type="number"
            autocomplete="off"
            v-model.number="goodsNum"
            class="itxt"
          />
          <button class="plus" @click="goodsNum++">+</button>
        </div>
        <div class="add">
          <button v-noRepeatClick @click="addCars">加入购物车</button>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import { mapGetters } from "vuex";
export default {
  name: "Info",
  data() {
    return {
      isActive: false,
      goodsNum: 1,
    };
  },

  methods: {
    //添加到购物车
    async addCars() {
      try {
        //接受添加购物车结果
        const res = await this.$store.dispatch("goods/addUpdateCars", {
          goodsId: this.$route.params.goodsId,
          goodsNum: this.goodsNum,
        });
        if (res) {
          this.$router.push({
            name: "AddCart",
            params: { goodsNum: this.goodsNum },
          });
          sessionStorage.setItem("GOODSINFO", JSON.stringify(this.skuInfo));
        }
      } catch (error) {
        //弹窗提示添加失败
        this.$layer.msg(error);
      }
    },
  },
  computed: {
    ...mapGetters("goods", ["skuInfo"]),
  },
  watch: {
    //监听商品数量的变化并进行合法值验证
    goodsNum(value) {
      if (isNaN(value * 1) || value <= 0) {
        this.goodsNum = 1;
      } else {
        this.goodsNum = parseInt(value);
      }
    },
  },
};
</script>

<style scoped lang="less">
.InfoWrap {
  width: 700px;
  float: right;
  .InfoName {
    font-size: 14px;
    line-height: 21px;
    margin-top: 15px;
  }
  .news {
    color: #e12228;
    margin-top: 15px;
  }
  .priceArea {
    background: #fee9eb;
    padding: 7px;
    margin: 13px 0;
    .priceArea1 {
      overflow: hidden;
      line-height: 28px;
      margin-top: 10px;
      .title {
        float: left;
        margin-right: 15px;
      }
      .price {
        float: left;
        color: #c81623;
        i {
          font-size: 16px;
        }
        em {
          font-size: 24px;
          font-weight: 700;
        }
        span {
          font-size: 12px;
        }
      }
      .remark {
        float: right;
      }
    }
    .priceArea2 {
      overflow: hidden;
      line-height: 28px;
      margin-top: 10px;
      .title {
        margin-right: 15px;
        float: left;
      }
      .fixWidth {
        width: 520px;
        float: left;
        .red-bg {
          background: #c81623;
          color: #fff;
          padding: 3px;
        }
        .t-gray {
          color: #999;
        }
      }
    }
  }
  .support {
    border-bottom: 1px solid #ededed;
    padding-bottom: 5px;
    .supportArea {
      overflow: hidden;
      line-height: 28px;
      margin-top: 10px;
      .title {
        margin-right: 15px;
        float: left;
      }
      .fixWidth {
        width: 520px;
        float: left;
        color: #999;
      }
    }
  }
  .choose {
    .chooseArea {
      overflow: hidden;
      line-height: 28px;
      margin-top: 10px;
      .choosed {
        mark {
          height: 30px;
          display: inline-block;
          line-height: 30px;
          background-color: snow;
          border: 1px solid #ddd;
          padding: 0 20px;
          margin-right: 20px;
          a {
            font-size: 12px;
            color: red;
            margin-left: 20px;
            cursor: pointer;
          }
        }
      }
      dl {
        overflow: hidden;
        margin: 13px 0;
        dt {
          margin-right: 15px;
          float: left;
        }
        dd {
          float: left;
          margin-right: 5px;
          color: #666;
          line-height: 24px;
          padding: 2px 14px;
          border-top: 1px solid #eee;
          border-right: 1px solid #bbb;
          border-bottom: 1px solid #bbb;
          border-left: 1px solid #eee;
          &:nth-of-type(1) {
            color: red;
          }
        }
      }
    }
    .cartWrap {
      .controls {
        width: 130px;
        display: flex;
        float: left;
        margin-right: 15px;
        align-items: center;
        .itxt {
          width: 50px;
          height: 40px;
          border: 1px solid rgb(190, 190, 190);
          color: #555;
          float: left;
          font-size: 18px;
          border-right: 0;
          text-align: center;
          margin: 0px 5px;
        }
        .plus,
        .mins {
          width: 35px;
          text-align: center;
          height: 40px;
          font-size: 20px;
          font-weight: 500;
          line-height: 17px;
          background: #f1f1f1;
          color: #666;
          border: 1px solid #ccc;
        }
        .mins {
          float: left;
        }
        .plus {
          float: right;
        }
      }
      .add {
        float: left;
        button {
          background-color: #3498db;
          padding: 0 25px;
          font-size: 16px;
          color: #fff;
          border: none;
          height: 40px;
          line-height: 36px;
          display: block;
        }
      }
    }
  }
}
</style>